package com.ls.eightSort;

import lombok.extern.slf4j.Slf4j;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 冒泡排序
 */
public class MaoPaoSort {

    public static void main(String[] args) {
      for (int j = 0;j<4;j++){
          int[] arr = new int[80000];
          Random random = new Random();
          for (int i = 0; i < arr.length; i++) {
              arr[i] = random.nextInt();
          }
//        show(arr);
          DateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss");
          String format = dateFormat.format(new Date());
          System.out.println("开始时间:"+format);
          sort(arr);
          System.out.println("结束时间:"+dateFormat.format(new Date()));
          System.out.println();
//        show(sort);
      }
    }

    public static void test(){
        int[] arr = new int[80000];
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt();
        }
//        show(arr);
        DateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss");
        String format = dateFormat.format(new Date());
        System.out.println("开始时间:"+format);
        sort(arr);
        System.out.println("结束时间:"+dateFormat.format(new Date()));
        System.out.println();
//        show(sort);
    }

    /**
     * @param arr
     * @return
     */
    public static int [] sort(int arr[]){
//        Integer count = 0;
        Boolean flag;

        // 外层循环执行要排序几次
        for (int i = 0; i < arr.length-1; i++) {
            flag = true;
            // 内层排序决定是否交换
           for (int j = 0;j<arr.length-1-i;j++){
//               count++;
               if(arr[j]>arr[j+1]){
                   flag = false;
                   int tem = arr[j];
                   arr[j] = arr[j+1];
                   arr[j+1] = tem;
               }
           }
//           show(arr);
            // 如果内部循环一次都没交换，则说明已经有序了，不用再排序了
            if (flag){
                break;
            }
        }
//        System.out.println("共执行"+count);

        return arr;
    }

    public static void show(int arr[]){
        for (int i : arr) {
            System.out.print(i+",");
        }
        System.out.println();

    }
}
